package com.lvmou.index12306.frameworks.starter.user.core;

import com.alibaba.ttl.TransmittableThreadLocal;

import javax.swing.text.html.Option;
import java.util.Optional;
/**
 * 用户上下文
 */
public final class UserContext {
    private static final ThreadLocal<UserInfoDTO> USER_THREAD_LOCAL = new TransmittableThreadLocal<>();

    /**
     * 设置用户
     * @param user
     */
    public static void setUser(UserInfoDTO user){
        USER_THREAD_LOCAL.set(user);
    }

    /**
     * 获取用户
     * @return
     */
    public static String getUserId(){
        UserInfoDTO userInfoDTO = USER_THREAD_LOCAL.get();
        return Optional.ofNullable(userInfoDTO).map(UserInfoDTO::getUserId).orElse(null);
    }

    /**
     * 获取用户名
     * @return
     */
    public static String getUsername(){
        UserInfoDTO userInfoDTO = USER_THREAD_LOCAL.get();
        return Optional.ofNullable(userInfoDTO).map(UserInfoDTO::getUsername).orElse(null);
    }

    /**
     * 获取用户真实姓名
     * @return
     */
    public static String getUserRealName(){
        UserInfoDTO userInfoDTO = USER_THREAD_LOCAL.get();
        return Optional.ofNullable(userInfoDTO).map(UserInfoDTO::getRealName).orElse(null);
    }

    /**
     * 获取用户token
     * @return
     */
    public static String getUserToken(){
        UserInfoDTO userInfoDTO = USER_THREAD_LOCAL.get();
        return Optional.ofNullable(userInfoDTO).map(UserInfoDTO::getToken).orElse(null);
    }

    /**
     * 清除用户
     */
    public static void removeUser(){
        USER_THREAD_LOCAL.remove();
    }

}
